1. Field of the Invention
The present invention relates to a synthesis subband filter for a Moving Pictures Expert Group (MPEG) audio decoder, and a decoding method thereof. More particularly, the present invention relates to a synthesis subband filter for an MPEG audio decoder capable of fast decoding by simplifying computation of the synthesis filter which decodes a received MPEG audio subband sample, and a decoding method thereof.
2. Description of the Related Art
Synthesis filters for an MPEG audio decoder reconvert to a time domain a subband signal which is converted to a frequency domain. Since the synthesis filter require the most computation and processing time in the MPEG decoder, processing speed of the synthesis filter considerably affects the decoding speed of the MPEG audio decoder.
Generally, a header is separated from a received MPEG audio signal, and in case of MPEG-I, for example, the same decoding processes are performed per two channels. The synthesis filter, performing one of the decoding processes, performs the same computation with respect to each audio channel.
A frame of an MPEG audio layer-II corresponds to 1152 pulse code modulation (PCM) audio samples. Each audio frame comprises a 32-bit header part, a bit allocation part having information on the bit allocation, a 16-bit cyclic redundancy check (CRC) for protecting a scale factor selection information (SCFSI) from an error, a SCFSI for storing a transmission pattern of the scale factor, a 6-bit scale factor for designating a scale value of the subband sample, and an additional data field of the MPEG audio layer-II.
The MPEG audio layer-II has 32 subbands, and each subband comprises 36 subband samples. The 36 subband samples are grouped by a unit of three consecutive subband samples to form a granule, and are encoded and decoded by the granule unit. The 32 subbands are decoded at once. Since each granule requires decoding three time in order to be entirely decoded, and each subband has respectively 12 granules, decoding is performed a total of 36 times.
FIG. 1 is a flowchart for illustrating computation procedure of a conventional synthesis filter. In order to perform decoding, the synthesis filter comprises an inverse modified discrete cosine transform (IMDCT) part for a matrix computation, an inverse pseudo quadrature mirror filter (IPQMF) part for a window computation, and a memory for storing an interim result.
Hereinbelow, the computation procedure of the synthesis filter according to an International Standard Organization (ISO)/International Electrotechnical Committee (IEC) 11172-3 MPEG-I audio standard will be explained with reference to FIG. 1.
The synthesis filter receives an input of 32 new audio samples Sk, where k=0, 1, . . . , 31 (S110). A matrix computation result V[i] is shifted by 64 samples (S115), and the matrix computation is performed (S120).
The shifted matrix computation result V[i] is expressed by [Equation 1] as follows:V[i]=V[i−64], i=1023, . . . ,63  [Equation 1]
In [Equation 1], ‘i’ is an index. The matrix computation can be expressed by [Equation 2] as follows:
                              V          ⁡                      [            i            ]                          =                              ∑                          k              =              0                        31                    ⁢                                          ⁢                                    N              ik                        ⁢                          X              k                                                          [                  Equation          ⁢                                          ⁢          2                ]            
In [Equation 2], i=0, 1, . . . , 63. A filter coefficient Nik is expressed by [Equation 3] as follows:Nik=cos[(16+i)(2k+1)π/64]  [Equation 3]
In [Equation 3], i=0, 1, . . . , 63, and k=0, 1, . . . , 31.
When the matrix computation is completed, 512 vectors Ui is generated (S130), and this is expressed by [Equation 4] as follows:U[is64+j]=V[is128+j]U[is64+32+j]=V[is128+96+j]  [Equation 4]
In [Equation 4], I=0, 1, . . . , 7, and j=0, 1, . . . , 31. By multiplying the generated vector U[i] by a synthesis window coefficient D[i], W[i] is generated (S135). Here, i=0, 1, . . . , 511. Using the W[i], 32 samples P[j] are calculated (S140), and the calculated samples are output (S145). This is expressed by following [Equation 5].
                              P          ⁡                      [            j            ]                          =                              ∑                          i              =              0                        15                    ⁢                                          ⁢                      W                          j              +                              32                ⁢                i                                                                        [                  Equation          ⁢                                          ⁢          5                ]            
In [Equation 5], j=0, . . . , 31.
The synthesis filter requires numerous computations and a considerable amount of time for the shift computation performed by the IMDCT part, the matrix computation, an address computation for recovering the 32 samples by the IPQMF part, and the window computation.
The filter coefficient Nik of [Equation 3] is symmetric, and accordingly, V[i] is symmetric. This is expressed by following [Equation 6].
                                                                        V                ⁡                                  [                  i                  ]                                            =                            ⁢                                                ∑                                      k                    =                    0                                    15                                ⁢                                                                  ⁢                                                      N                    ik                                    ⁡                                      [                                                                  X                        k                                            +                                                                                                    (                                                          -                              1                                                        )                                                    i                                                ⁢                                                  sX                                                      31                            -                            k                                                                                                                ]                                                                                                                                                            V                  ⁡                                      [                    i                    ]                                                  =                                ⁢                                  -                                      V                    ⁡                                          [                                              32                        -                        i                                            ]                                                                                  ,                              i                =                0                            ⁢                                                          ,              …              ⁢                                                          ,              32                                                                          V              [                                                i                  =                                    ⁢                                      V                    ⁡                                          [                                              96                        -                        i                                            ]                                                                      ,                                  i                  =                  33                                ⁢                                                                  ,                …                ⁢                                                                  ,                63                                                                        [                  Equation          ⁢                                          ⁢          6                ]            
In the conventional art, using the symmetry of the synthesis filter, the IMDCT part reduces the number of multiply-and-accumulate (MAC) operations from 2048 to 512, thereby decreasing the computation and demanded memory capacity. The memory section for storing the 512 computation results V[i] (I=0, . . . , 511) is divided into 32 blocks.
FIG. 2 is a view for illustrating a method for generating an address of the memory which stores the interim result of the synthesis filter. Referring to FIG. 2, 16 block addresses used for one computation cycle of the IPQMF part is expressed by one row. In FIG. 2, 16 rows for the totally 16 IPQMF computation cycles are shown.
The IPQMF cycle is a unit for one time of signal processing in the computation of the IPQMF part. Since the 16 block addresses used for one IPQMF cycle are not actual addresses of the memory which stores the 512 V[i]s, the addresses need to be re-calculated to read V[i] for the computation of the IPQMF part.
Therefore, when the conventional synthesis filter decodes, the shift computation is required, and the address is re-calculated using a stored block for the actual address. This causes complicated computation procedures, thereby demanding increased memory capacity. Moreover, the decoding process is delayed.